package com.yt.common.sp;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
//import okhttp3.*;
//import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public final class Demo extends Thread{

//    public static void main(String[] args) throws IOException {
//
//        List list =  new ArrayList();
//        list.add("郫都区 饶刚 加油");
//        list.add("郫都区 饶刚 你最棒！");
//        list.add("饶刚 加油");
//        list.add("最美护河人饶刚");
//        list.add("饶刚 饶刚");
//        list.add("饶刚");
//        list.add("请投 饶刚 一票");
//        list.add("郫都区饶刚");
//        list.add("河道守护人饶刚");
//        list.add("饶刚 为你点赞");
//
//        final Map[] map = {OKHttpProxy.getIpAndPort()};
//        try{
//
//            Timer timer=new Timer();//实例化Timer类
//            Random r = new Random(1);
//            final int[] inum = {0};
//            final int[] ii = {0};
//            timer.schedule(new TimerTask(){
//                public void run(){
//                    Random random=new Random();
//                    int rint = random.nextInt(5000);
//                    try{
//                        Thread.sleep(rint);
//                    }catch(Exception e){
//                        e.printStackTrace();
//                    }
//
//                    int i = OKHttpProxy.geti(map[0]);
//                    if(i < 0 || inum[0] > 5){
//                        map[0] = OKHttpProxy.getIpAndPort();
//                        i = OKHttpProxy.geti(map[0]);
//                        inum[0] = 0;
//                    }
//                    ii[0]++;
//                    System.out.println( "--------------------------------");
//
//                    String ip = map[0].get("ip").toString(); // 代理主机地址
//                    int port = Integer.parseInt(map[0].get("port").toString()); // 代理主机端口
//                    try{
//                          OKHttpProxy.build(ip, port).post(list);
//                          inum[0]++;
//                    }catch(Exception e){
//                          e.printStackTrace();
//                    }
//
//                }
//            },1000, 5000);
//
//
//        }catch(Exception e){
//            e.printStackTrace();
//        }
//
//
//
//
//
//
//        // 使用OKHttp库
////        try{
// //           OKHttpProxy.build(ip, port).test();
////        }catch(Exception e){
////            OKHttpProxy.build(ip, port).test();
////        }
//
//
//
//        // OKHttpProxy.build(ip, port, "aaaaaa", "bbbbbb").test(); // 代理认证
//
//        // 使用HttpClient库
//        // HttpClientProxy.build(ip, port).test();
//        // HttpClientProxy.build(ip, port, "aaaaaa", "bbbbbb").test(); // 代理认证
//    }
//
//
//
//    public void run() {
//        final Map[] map = {OKHttpProxy.getIpAndPort()};
//        try{
//
//            Timer timer=new Timer();//实例化Timer类
//            Random r = new Random(1);
//            final int[] inum = {0};
//            final int[] ii = {0};
//            timer.schedule(new TimerTask(){
//                public void run(){
//                    Random random=new Random();
//                    int rint = random.nextInt(2000);
//                    try{
//                        Thread.sleep(rint);
//                    }catch(Exception e){
//                        e.printStackTrace();
//                    }
//
//                    int i = OKHttpProxy.geti(map[0]);
//                    if(i < 0 || inum[0] > 5){
//                        map[0] = OKHttpProxy.getIpAndPort();
//                        i = OKHttpProxy.geti(map[0]);
//                        inum[0] = 0;
//                    }
//
//                    if(null != map[0].get("error") && !map[0].get("error").equals("true") && inum[0] > 5){
//                        map[0] = OKHttpProxy.getIpAndPort();
//                        i = OKHttpProxy.geti(map[0]);
//                        inum[0] = 0;
//                    }
//
//                    ii[0]++;
//                    System.out.println( map[0].get("ip"));
//                    System.out.println( map[0].get("port"));
//                    System.out.println( map[0].get("expire"));
//                    System.out.println("间隔时间:"+rint);
//                    System.out.println("请求点赞:"+inum[0]);
//                    System.out.println("执行次数:"+ii[0]);
//                    System.out.println( "--------------------------------");
//
//                    String ip = map[0].get("ip").toString(); // 代理主机地址
//                    int port = Integer.parseInt(map[0].get("port").toString()); // 代理主机端口
//                    try{
//                        OKHttpProxy.build(ip, port).test(inum[0]);
//                        inum[0]++;
//                    }catch(Exception e){
//                        e.printStackTrace();
//                    }
//
//                }
//            },1000, 1500);
//
//
//        }catch(Exception e){
//            e.printStackTrace();
//        }
//    }


//    /**
//     * OKHttp库使用代理
//     */
//    static class OKHttpProxy {
//        String proxyHost;
//        int proxyPort;
//        String proxyAccount;
//        String proxyPwd;
//
//        /**
//         * @param host 代理主机地址
//         * @param port 代理主机端口
//         */
//        public static OKHttpProxy build(String host, int port) {
//            OKHttpProxy proxy = new OKHttpProxy();
//            proxy.proxyHost = host;
//            proxy.proxyPort = port;
//            return proxy;
//        }
//
//        /**
//         * @param host 代理主机地址
//         * @param port 代理主机端口
//         * @param acc 代理认证账号
//         * @param pwd 代理认证口令
//         */
//        public static OKHttpProxy build(String host, int port, String acc, String pwd) {
//            OKHttpProxy proxy = new OKHttpProxy();
//            proxy.proxyHost = host;
//            proxy.proxyPort = port;
//            proxy.proxyAccount = acc;
//            proxy.proxyPwd = pwd;
//            return proxy;
//        }
//
//        public void test(int inum) {
//            if(inum < 5){
//                //String targetUrl = "http://river.yitoutiao.net/index/praise?jingdian_id=13&cate_id=1";
//                String targetUrl = "http://river.yitoutiao.net/index/praise?jingdian_id=32&cate_id=4";
//
//                OkHttpClient client = null;
//                if (proxyAccount == null || proxyPwd == null) {
//                    client = getHttpClient(proxyHost, proxyPort);
//                } else {
//                    // 账号密码验证
//                    client = getHttpClient(proxyHost, proxyPort, proxyAccount, proxyPwd);
//                }
//
//                Request request = new Request.Builder()
//                        .url(targetUrl)
//                        .build();
//                try{
//                    Response response = client.newCall(request).execute();
//                    System.out.println(response.body().string());
//                }catch(Exception e){
//                    test(inum);
//                }
//
//            }else {
//                System.out.println("请切换ip地址再试!");
//            }
//
//        }
//
//
//        public void post(List list) {
//
//
//                //String targetUrl = "http://river.yitoutiao.net/index/praise?jingdian_id=13&cate_id=1";
//                String targetUrl = "https://river.yitoutiao.net//index/liuyan";
//
//                OkHttpClient client = null;
//                if (proxyAccount == null || proxyPwd == null) {
//                    client = getHttpClient(proxyHost, proxyPort);
//                } else {
//                    // 账号密码验证
//                    client = getHttpClient(proxyHost, proxyPort, proxyAccount, proxyPwd);
//                }
//
//                Random random=new Random();
//                int rint = random.nextInt(10);
//
//
//                FormBody formBody = new FormBody.Builder().add("content",list.get(rint).toString()).build();
//
//                Request request = new Request.Builder()
//                        .url(targetUrl)
//                        .post(formBody)
//                        .build();
//                try{
//                    Response response = client.newCall(request).execute();
//                    System.out.println(response.body().string());
//                }catch(Exception e){
//                    e.printStackTrace();
//                }
//
//
//
//        }
//
//
//        public static int geti(Map<String,String> map){
//            String expire = map.get("expire").toString();
//            int i = 0;
//            try{
//                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                Date date1 = format.parse(expire);
//                Date newdate = new Date();
//                String date = format.format(newdate);
//                Date date2 = format.parse(date);
//                i = date1.compareTo(date2);
//            }catch(Exception e){
//                e.printStackTrace();
//            }
//            return i;
//        }
//
//        public static Map<String,String> getIpAndPort(){
//            String url = "http://api.shenlongip.com/ip?key=cwind72n&pattern=json&count=1&need=1100&protocol=1";
//            //String url = "http://getip.beikeruanjian.com/getip/?user_id=20211201181930404410&token=fqINRVjoWDSl5e92&server_id=16338&num=1&protocol=1&format=json&jsonipport=0&jsonexpiretime=1&jsoncity=0&jsonisp=0&dr=1&province=%E5%9B%9B%E5%B7%9D&city=1&citycode=";
//            OkHttpClient okHttpClient = new OkHttpClient();
//            Request request = new Request.Builder().url(url).get().build();
//            Map<String,String> map = new HashMap<>();
//            try{
//                Response response = okHttpClient.newCall(request).execute();
//                if(response.isSuccessful()){
//                    String bodys = response.body().string();
//                    JSONObject jsonObject = JSON.parseObject(bodys);
//                    String datastr = jsonObject.getString("data");
//                    JSONArray jsonArray = JSON.parseArray(datastr);
//
//                    JSONObject jsonObject1 = JSON.parseObject(jsonArray.get(0).toString());
//                    String ip = jsonObject1.get("ip").toString();
//                    String port = jsonObject1.get("port").toString();
//                    String expire = jsonObject1.get("expire").toString();
//
//                    map.put("ip",ip);
//                    map.put("port",port);
//                    map.put("expire",expire);
//
//                }else{
//                    String bodys = response.body().string();
//                    System.out.println(bodys);
//                }
//            }catch(Exception e){
//                map.put("error","true");
//                //e.printStackTrace();
//            }
//            return map;
//        }
//
//
//
//        /**
//         * 代理不需要账号密码认证的httpClient
//         */
//        private static OkHttpClient getHttpClient(String proxyHost, int proxyPort) {
//            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
//            return new OkHttpClient.Builder()
//                    .proxy(proxy)
//                    .build();
//        }
//
//        /**
//         * 代理需要账号密码认证的httpClient
//         */
//        private static OkHttpClient getHttpClient(String proxyHost, int proxyPort, String acc, String pwd) {
//            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
//            // 账号密码验证
//            Authenticator authenticator = new Authenticator() {
//                @Override
//                public Request authenticate(Route route, Response resp) throws IOException {
//                    String credential = Credentials.basic(acc, pwd);
//                    return resp.request().newBuilder().header("Proxy-Authorization", credential).build();
//                }
//            };
//            return new OkHttpClient.Builder()
//                    .proxy(proxy)
//                    .proxyAuthenticator(authenticator)
//                    .build();
//        }
//
//    }
//
//    /**
//     * HttpClient库使用代理
//     */
//    static class HttpClientProxy {
//        String proxyHost;
//        int proxyPort;
//        String proxyAccount;
//        String proxyPwd;
//
//        /**
//         * @param host 代理主机地址
//         * @param port 代理主机端口
//         */
//        public static HttpClientProxy build(String host, int port) {
//            HttpClientProxy proxy = new HttpClientProxy();
//            proxy.proxyHost = host;
//            proxy.proxyPort = port;
//            return proxy;
//        }
//
//        /**
//         * @param host 代理主机地址
//         * @param port 代理主机端口
//         * @param acc 代理认证账号
//         * @param pwd 代理认证口令
//         */
//        public static HttpClientProxy build(String host, int port, String acc, String pwd) {
//            HttpClientProxy proxy = new HttpClientProxy();
//            proxy.proxyHost = host;
//            proxy.proxyPort = port;
//            proxy.proxyAccount = acc;
//            proxy.proxyPwd = pwd;
//            return proxy;
//        }
//
//        public void test() throws IOException {
//            //String targetUrl = "http://myip.ipip.net";
//            String targetUrl = "http://river.yitoutiao.net/index/praise?jingdian_id=13&cate_id=1";
//
//            CloseableHttpClient client = null;
//            if (proxyAccount == null || proxyPwd == null) {
//                client = getHttpClient(proxyHost, proxyPort);
//            } else {
//                // 账号密码验证
//                client = getHttpClient(proxyHost, proxyPort, proxyAccount, proxyPwd);
//            }
//            HttpGet httpGet = new HttpGet(targetUrl);
//            CloseableHttpResponse response = client.execute(httpGet);
//            String resultStr = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
//            System.out.println(resultStr);
//        }
//
//        /**
//         * 代理不需要账号密码认证的httpClient
//         */
//        private static CloseableHttpClient getHttpClient(String proxyHost, int proxyPort) {
//            HttpHost proxy = new HttpHost(proxyHost, proxyPort, "HTTP");
//            return HttpClients.custom()
//                    .setProxy(proxy)
//                    .build();
//        }
//
//        /**
//         * 代理需要账号密码认证的httpClient
//         */
//        private static CloseableHttpClient getHttpClient(String proxyHost, int proxyPort, String acc, String pwd) {
//            HttpHost proxy = new HttpHost(proxyHost, proxyPort, "HTTP");
//            CredentialsProvider provider = new BasicCredentialsProvider();
//            provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(acc, pwd));
//
//            return HttpClients.custom()
//                    .setProxy(proxy)
//                    .setDefaultCredentialsProvider(provider)
//                    .build();
//        }
//
//    }

}

